import { app } from 'electron'

export const PathConst_Name = 'PathConst'

/**
 * Electron 内置的目录或文件路径常量
 */
export const PathConst = {
  /**
   * 用户的 home 文件夹（主目录）
   */
  Home: () => app.getPath('home'),
  /**
   * 每个用户的应用程序数据目录，默认情况下指向：
   * - Windows: `%APPDATA%`
   * - macOS: `~/Library/Application Support`
   * - Linux: `$XDG_CONFIG_HOME` 或者 `~/.config`
   */
  AppData: () => app.getPath('appData'),
  /**
   * 储存你应用程序配置文件的文件夹，默认是 appData 文件夹附加应用的名称，
   * 按照习惯用户存储的数据文件应该写在此目录，同时不建议在这写大文件，因为
   * 某些环境会备份此目录到云端存储。
   */
  UserData: () => app.getPath('userData'),
  /**
   * 此目录存储由 Session 生成的数据，例如 localStorage，cookies，磁盘缓存，
   * 下载的字典，网络 状态，开发者工具文件等。 默认为 userData 目录。 Chromium
   * 可能在此处写入非常大的磁盘缓存，因此，如果您的应用不依赖于浏览器存储（如 localStorage
   * 或 cookie）来保存用户数据，建议将此目录设置为其他位置，以避免污染 userData 目录。
   */
  SessionData: () => app.getPath('sessionData'),
  /**
   * 临时文件夹
   */
  Temp: () => app.getPath('temp'),
  /**
   * 当前的可执行文件
   */
  Exe: () => app.getPath('exe'),
  /**
   * The libchromiumcontent 库
   */
  Module: () => app.getPath('module'),
  /**
   * 当前用户的桌面文件夹
   */
  Desktop: () => app.getPath('desktop'),
  /**
   * 用户文档目录的路径
   */
  Documents: () => app.getPath('documents'),
  /**
   * 用户下载目录的路径
   */
  Downloads: () => app.getPath('downloads'),
  /**
   * 用户音乐目录的路径
   */
  Music: () => app.getPath('music'),
  /**
   * 用户图片目录的路径
   */
  Pictures: () => app.getPath('pictures'),
  /**
   * 用户视频目录的路径
   */
  Videos: () => app.getPath('videos'),
  /**
   * 用户最近文件的目录 (仅限 Windows)。
   */
  Recent: () => app.getPath('recent'),
  /**
   * 应用程序的日志文件夹
   */
  Logs: () => app.getPath('logs'),
  /**
   * 崩溃转储文件存储的目录。
   */
  CrashDumps: () => app.getPath('crashDumps')
} as const

export const PathConstType_Name = 'PathConstType'

export type PathConstType = typeof PathConst
